# 字典讲解
# 字典是Python的中重要的一种数据类型，可以存储任意对像。
# 字典是以键值对的形式创建的{'key':'value'}利用大括号包裹着。
# 注意点：
# 1、字典的键（key）不能重复，值（value）可以重复。
# 2、字典的键（key）只能是不可变类型，如数字，字符串，元组
dict1={}   #声明了一个空字典
print(dict1)
print(type(dict1))

# 创建了一个字典，并附初始值。字典的键（key）不能重复，若出现相同的key值，后面的会覆盖掉前面相同key所对应的value
dict2={"name":"黑桃A","age":22,"age":29}
print(dict2)
#########################常用操作#################################################
#########################查询方法#################################################
# keys方法，获取字典中所有的key值，将所有的key值放在列表中，可以用for循环进行遍历
print(dict2.keys())
for key in dict2.keys():
    print(key,end=" ")
    pass
print()

# values方法，获取字典中所有的values值，将所有的values值放在列表中，可以用for循环进行遍历
print(dict2.values())
for value in dict2.values():
    print(value,end=" ")
    pass
print()

# items方法，获取字典中所有的key-value值，将键值对组成元祖存放在列表中
print(dict2.items())
for key,value in dict2.items():
    print("key值为：{}，所对应的value值为:{}".format(key,value))
    pass

# 通过指定的key值取对应的value,当该key值不存在的时候，会引发异常
print(dict2["name"])
# print(dict2["hobby"])   键值不存在，报错

# get方法，在python中安全的取值方法,若取的key值不存在，不会引发异常，直接输出NONE
print(dict2.get("name"))
print(dict2.get("hobby"))
print("======================================================")
# len方法，可以查询字典有多少个key值
print(len(dict2))

#########################修改操作#################################################
# 通过字典的key值，取对应的value，进行重新赋值即可
dict2["name"]="红桃K"
print(dict2)

#########################新增操作#################################################
# 通过字典中的key值，取对应的value，若该key不存在，则将新指定的key-value添加到原字典中
dict2["hobby"]="唱歌"
print(dict2)

#########################删除操作#################################################
# pop方法，可以通过指定的key值，删除指定的key对应的value
dict2.pop("hobby")
print(dict2)
# del可以指定需要删除的键值对的key值
del dict2["age"]
print(dict2)
# del方法可以直接删除变量，删除后，后面不能在获取
# del dict2
print(dict2)

# 补充知识点
# update方法可以直线对字典的新增或修改
dict2.update({"name":"方片7"})  #该键存在，执行修改操作
print(dict2)
dict2.update({"age":22})   #键值不存在，执行新增操作
print(dict2)